# 玩法1

items = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 3, items))
print(squared)


# 玩法2

# Map会将一个函数映射到一个输入列表的所有元素上

def original(x):
    return x


def multiply(x):
    return (x * x)


def add(x):
    return (x + x)


# 大多数时候，我们使用匿名函数(lambdas)来配合map, 所以我在上面也是这么做的。 不仅用于一列表的输入， 我们甚至可以用于一列表的函数!
funcs = [original, add, multiply]
for i in range(5):
    value = map(lambda x: x(i), funcs)
    print(list(value))

# 译者注:上面print时，加了list转换，是为了python2/3的兼容性,
# 在python2中map直接返回列表，但在python3中返回迭代器 因此为了兼容python3, 需要list转换一下
# #
# Output:
# [0, 0]
# [1, 2]
# [4, 4]
# [9, 6]
# [16, 8]
